Many communication systems, including magnetic and optical recording systems, are constrained as to the types of binary data patterns that can be communicated. One limitation relates to the maximum number of consecutive zeros that can be present in a binary data sequence, and is commonly referred to as the G constraint. Another limitation relates to the maximum number of zeros in alternating bit positions that can be present in a data sequence and is commonly referred to as the I constraint. For instance, in a bit sequence b0b1b2b3b4b5b6b7, the I constraint determines the maximum number of consecutive zeros allowed in the strings of even-numbered bits and odd-numbered bits (b0b2b4b6 and b1b3b5b7). G and I constraints are often written in slash notation as a G/I constraint, such as 20/18, where 20 is the G constraint and 18 is the I constraint. Many communications channels have a G/I constraint to control DC level, allow reliable clock recovery, and/or permit receiver synchronization.
It is often valuable to use parity encoding on data with G/I constraints. Referring now to FIG. 1A, an exemplary communications channel 10 is shown that receives input data 12 satisfying a G/I constraint. A parity encoder 14 calculates P parity bit(s) and combines the P parity bit(s) with the incoming data 12. An encoded data signal 16 from the parity encoder 14 will have a G constraint that is P greater than that of the incoming data 12. There is no guarantee that the encoded data 16 will retain the I constraint (unless P is even). In fact, it is possible for the I constraint of the encoded data 16 to approach infinity. Referring now to FIG. 1B, parity encoded data 18 is decoded by a parity decoder 20. Violation of the original G/I constraint by the communications channel 10 would degrade the system performance. In other words, more system errors would occur.
To solve this problem, prior approaches have required that the RLL code be designed together with the parity code. This close coupling is such that a change to one necessitates a change to the other. For instance, design parameters such as block size often have had to be identical for the G/I and parity systems. This limits the flexibility of communications systems design and increases the difficulty in implementing advantageous changes to either system.